/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   Module Name          : com.yaodian100.crm.cs.service.CsService
   Module Description   :

   Date Created      : 2009/12/17
   Original Author   : andy.chuang
   Team              : yaodian100
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   MODIFICATION HISTORY
   ------------------------------------------------------------------------------
   Date Modified       Modified by       Comments
   ------------------------------------------------------------------------------
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
package com.yaodian100.crm.cs.service;

import java.io.File;
import java.util.List;
import java.util.Map;

import com.yaodian100.crm.cs.entity.FromChannel;
import com.yaodian100.crm.cs.entity.Question;
import com.yaodian100.crm.workorder.entity.WorkOrder;

/**
 * @author andy.chuang
 * 
 */
public interface CsService {
	public void updateQuestion(String questionType, String id, String username, String fromChannel, String description,
			String shortDesc, String memberId);

	public void createProductQuestion(boolean isMember, String email, String memberId, String productId, String content);

	public void createCommonQuestion(String email, String memberId, String productId, String content, String phoneArea,
			String phone, String phoneExt, String orderId, String cellPhone, String class2);

	public void createCommonQuestion(String email, String memberId, String productId, String content, String phoneArea,
			String phone, String phoneExt, String orderId, String cellPhone, String class2, List<File> attach,
			List<String> attachFileName);

	public void createPayByProductArrive(String memberId, String orderId, String content);

	public void createCommonQuestionFromInternal(String email, String memberId, String productId, String content,
			String phoneArea, String phone, String phoneExt, String orderId, String cellPhone, String class1, String class2,
			String commonQuestionType, String workFlowNodeId, Integer priority, String mustInquire, String answer);

	public WorkOrder createPartialCancelOrder(String orderId, String productId, String content, FromChannel channel);

	public Question createOutOfStockQuestion(String orderId, String productIds, String reason, String comment,
			FromChannel channel, String creater);

	public void forwardOrderForOutOfStockInternal(String orderId, String productIds, String reason, String comment,
			String creater);

	public void forwardOrderForOutOfStockInternalBatch(String[] orderIdsAndProductIds, String reason, String coment,
			String creater);

	/**
	 * 发送断货通知信&购物金
	 * 
	 * @param orderId 订单编号
	 * @param productIds 商品编号
	 */
	public void sendOutOfStockMailAndBonus(WorkOrder wo, String orderId, String productIds);

	/**
	 * 結單整單取消 发送断货通知信&购物金
	 * 
	 * @param wo
	 * @param orderId
	 * @param productIds
	 */
	public void sendOutOfStockCancelOrder(WorkOrder wo, String orderId, String productIds);

	public Question createQuestionBase(String questionId, String orgQuestionId, String questionTypeName,
			Map<String, String> values, String description, String comment, FromChannel channel, String creater);

	public void createHighPriceOrder(String memberId, String orderId, String content);

	public String createCrmCheckMobile(String mobile, String creater, String from);

	public void createFailDeliverCancelOrder(String woCreater, String woContent, String orderId, String soId);

	/**
	 * 一般使用的问题单工单建立
	 * 
	 * @param questionTypeName
	 * @param props
	 * @param comment
	 * @return
	 */
	public WorkOrder createGeneralQuestionAndWo(String questionTypeName, Map<String, String> props, String comment);

	public void createTmallWO(String orderId, String comment);

	/**
	 * 商品评价工单
	 * 
	 * @param commentId
	 * @param memberId
	 * @param productName
	 * @param title
	 * @param content
	 */
	public void createCheckProductComment(String commentId, String memberId, String productName, String title,
			String content, String productId);
}
